サンプルプログラム > サンプルコード(Visual Basic.NET)

サンプルコード(Visual C++ 6.0)
サンプルコード(AC出力の設定)

サンプルプログラム

サンプルコード(Visual Basic.NET)

ここで示されるサンプルはMicrosoft Visual Basic.NETを前提にしています。I/OライブラリにはVISA COM Softwareを使用するものとします。

VISA COM Softwareは当社ウェブサイトから「KI-VISA Library(3.0.x以降)」をダウンロードするか、National Instruments社のNI-VISA(VER.3.0 以降、Windows 2000およびWindows XPでは、VER.3.2以降)またはAgilent Technologies社のAgilent VISA(Agilent I/O Library M.01.00以降)を使用することができます。

それよりも古いバージョンのVISAではUSB機能を利用できないので注意してください。またUSB機能はWindows95およびNT3.5x/4.0では利用できません。

VISAセッションの取得と通信設定

下記のコードは、後述するすべてのサンプルプログラムに共通の部分です。本製品との通信をおこなう前に実行する必要があります。

変数strVisaAddressに代入するVISAリソース文字列は、GPIB/RS232C/USBによって書式が異なります。

GPIBの場合には、デバイスアドレスは5を前提にしています。

RS232Cの場合には、通信パラメータを19200bps、Data 8bits、Stop 1bit、Parity NONE、XFlowを前提にしています。本製品のインターフェース設定をこれらの値と合致するようにしてください。

USBの場合は本製品のインターフェース設定で詳細設定すべき項目はありませんが、VISAリソース文字列にUSB VID(ベンダーID)、PID(プロダクトID)、シリアル番号、を明示的に指定する必要があります。 VIDとPIDの値は、コンフィグ設定表示でも確認することができます。シリアル番号は、本製品後面パネルで確認することができます。

 

下記サンプルで使用するシリアル番号は一例です。

Imports Ivi.Visa.Interop

 

Public Class Form1

   Inherits System.Windows.Forms.Form

 

   Private ioMgr As IResourceManager

   Private vi As IMessage

 

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

 

       Try

           ' 1st try is create Global Resource Manager (It may fail if Agilent VISA)

           Dim progid_GRM As String = "VISA.GlobalRM"      'GRM prog-id

           ioMgr = Activator.CreateInstance(Type.GetTypeFromProgID(progid_GRM))

       Catch ex As Exception

           ' 2nd try is create Agilent Specific Resource Manager

           Dim progid_ASRM As String = "AgilentRM.SRMCls"  'Agilent SRM prog-id

           ioMgr = Activator.CreateInstance(Type.GetTypeFromProgID(progid_ASRM))

       End Try

 

 

        ' Decide VISA address

       Dim strVisaAddress As String

       strVisaAddress = "GPIB0::5::INSTR"

       'strVisaAddress = "ASRL1::INSTR"

       'strVisaAddress = "USB0::0x0B3E::0x1009::AB123456::INSTR"

 

       ' Open VISA session

       vi = ioMgr.Open(strVisaAddress, AccessMode.NO_LOCK, 0, "")

 

       Select Case vi.HardwareInterfaceType

           Case 4 ' RS232

               Dim serial As ISerial = vi

               serial.BaudRate = 19200

               serial.DataBits = 8

               serial.StopBits = SerialStopBits.ASRL_STOP_ONE

               serial.Parity = SerialParity.ASRL_PAR_NONE

               serial.FlowControl = SerialFlowControl.ASRL_FLOW_XON_XOFF

               serial.EndIn = SerialEndConst.ASRL_END_TERMCHAR

               serial.EndOut = SerialEndConst.ASRL_END_TERMCHAR

               vi.IOProtocol = IOProtocol.PROT_4882_STRS

               vi.WriteString(":SYST:REM")

           Case 7 ' USB

               vi.WriteString(":SYST:REM")

       End Select

 

       vi.Timeout = 3000

 

   End Sub

 

   'Form overrides dispose to clean up the component list.

   Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

       If disposing Then

           If Not (components Is Nothing) Then

               components.Dispose()

           End If

           vi.Close()

       End If

       MyBase.Dispose(disposing)

   End Sub

 

以降、VisaComのIMessageインターフェース(変数vi)を通じて本製品との通信をおこないます。

サンプルコード(AC出力の設定)

       Dim noCulture As IFormatProvider = Globalization.CultureInfo.InvariantCulture

 

       vi.WriteString("*RST")              'Resets the instrument

       vi.WriteString(":OUTP:COUP AC")    'Selects AC coupling

       vi.WriteString(":VOLT:RANG 135")   'Selects LOW (135V) range

 

       Dim dVoltMin, dVoltMax As Double

       vi.WriteString(":VOLT? MIN")       'Queries VOLT min

       dVoltMin = Convert.ToDouble(vi.ReadString(256), noCulture)

       vi.WriteString(":VOLT? MAX")       'Queries VOLT max

       dVoltMax = Convert.ToDouble(vi.ReadString(256), noCulture)

 

       Dim dFreqMin, dFreqMax As Double

       vi.WriteString(":FREQ? MIN")       'Queries FREQ min

       dFreqMin = Convert.ToDouble(vi.ReadString(256), noCulture)

       vi.WriteString(":FREQ? MAX")       'Queries FREQ max

       dFreqMax = Convert.ToDouble(vi.ReadString(256), noCulture)

 

       vi.WriteString(":VOLT 110")        'Sets 110V

       vi.WriteString(":FREQ 55")         'Sets 55Hz

       vi.WriteString(":OUTP ON")         'Turns the output on

 

       vi.WriteString(":SYST:ERR?")       'Queries instrument error

       Dim strInstrErr As String = vi.ReadString(256)

サンプルコード(DC出力の設定)

        Dim noCulture As IFormatProvider = Globalization.CultureInfo.InvariantCulture

 

       vi.WriteString("*RST")             'Resets the instrument

       vi.WriteString(":OUTP:COUP DC")    'Selects DC coupling

       vi.WriteString(":VOLT:RANG 135")   'Selects LOW (135V) range

 

       Dim dVoltMin, dVoltMax As Double

       vi.WriteString(":VOLT:OFFS? MIN")  'Queries VOLT min

       dVoltMin = Convert.ToDouble(vi.ReadString(256), noCulture)

       vi.WriteString(":VOLT:OFFS? MAX")  'Queries VOLT max

       dVoltMax = Convert.ToDouble(vi.ReadString(256), noCulture)

 

       vi.WriteString(":VOLT:OFFS +40")   'Sets 40V

       vi.WriteString(":OUTP ON")         'Turns the output on

 

       vi.WriteString(":SYST:ERR?")       'Queries instrument error

       Dim strInstrErr As String = vi.ReadString(256)

サンプルコード(出力変更トリガ)

       vi.WriteString("*RST")             'Resets the instrument

       vi.WriteString(":OUTP:COUP AC")    'Selects AC coupling

       vi.WriteString(":VOLT:RANG 135")   'Selects LOW (135V) range

 

       vi.WriteString(":VOLT 110")        'Sets 110V

       vi.WriteString(":FREQ 55")         'Sets 55Hz

       vi.WriteString(":OUTP ON")         'Turns the output on

 

       vi.WriteString(":VOLT:MODE STEP")  'Selects STEP mode

       vi.WriteString(":FREQ:MODE STEP")  'Selects STEP mode

 

       vi.WriteString(":VOLT:TRIG 100")   'Sets 100V when triggered

       vi.WriteString(":FREQ:TRIG 50")         'Sets 50Hz when triggered

 

       vi.WriteString(":TRIG:SEQ1:SOUR BUS")  'Selects BUS trigger

 

       vi.WriteString(":INIT:SEQ1")      'Initiates

       vi.WriteString(":TRIG:SEQ1:IMM")  'Gives a trigger

 

 

       vi.WriteString(":SYST:ERR?")       'Queries instrument error

       Dim strInstrErr As String = vi.ReadString(256)

サンプルコード(簡単な測定)

       Dim dVoltAC As Double

       Dim dCurrAC As Double

       Dim dCurrMax As Double

       Dim dCurrMaxHold As Double

       Dim dCurrCrestFactor As Double

       Dim dPowACReal As Double

       Dim dPowACApparent As Double

       Dim dPowACReactive As Double

       Dim dPowACPF As Double

 

       Dim noCulture As IFormatProvider = Globalization.CultureInfo.InvariantCulture

 

       ' Query VOLT AC

       vi.WriteString(":MEAS:VOLT:AC?")

       dVoltAC = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR AC

       vi.WriteString(":MEAS:CURR:AC?")

       dCurrAC = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR Max

       vi.WriteString(":MEAS:CURR:AMPL:MAX?")

       dCurrMax = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR Max Hold

       vi.WriteString(":MEAS:CURR:AMPL:MAX:HOLD?")

       dCurrMaxHold = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR Crest Factor

       vi.WriteString(":MEAS:CURR:CRES?")

       dCurrCrestFactor = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Real

       vi.WriteString(":MEAS:POW:AC:REAL?")

       dPowACReal = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Apparent

       vi.WriteString(":MEAS:POW:AC:APP?")

       dPowACApparent = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Reactive

       vi.WriteString(":MEAS:POW:AC:REAC?")

       dPowACReactive = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Power Factor

       vi.WriteString(":MEAS:POW:AC:PFAC?")

       dPowACPF = Convert.ToDouble(vi.ReadString(20), noCulture)

サンプルコード(柔軟性のある測定)

      Dim dVoltAC As Double

       Dim dCurrAC As Double

       Dim dCurrMax As Double

       Dim dCurrMaxHold As Double

       Dim dCurrCrestFactor As Double

       Dim dPowACReal As Double

       Dim dPowACApparent As Double

       Dim dPowACReactive As Double

       Dim dPowACPF As Double

 

       Dim noCulture As IFormatProvider = Globalization.CultureInfo.InvariantCulture

 

       ' Set up OPC event causing SRQ generation

       vi.WriteString("*ESE 1;*SRE 32;*CLS")

 

       ' Initiate a new measurement

       vi.WriteString(":TRIG:SEQ3:SOUR IMM")

       vi.WriteString(":INIT:SEQ3")

       vi.WriteString("*OPC")

 

       ' Wait for SRQ generation

       Dim iStb As Short

       Do

           iStb = vi.ReadSTB()

       Loop While (iStb And &H40) = 0

 

       ' Query VOLT AC

       vi.WriteString(":FETC:VOLT:AC?")

       dVoltAC = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR AC

       vi.WriteString(":FETC:CURR:AC?")

       dCurrAC = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR Max

       vi.WriteString(":FETC:CURR:AMPL:MAX?")

       dCurrMax = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR Max Hold

       vi.WriteString(":FETC:CURR:AMPL:MAX:HOLD?")

       dCurrMaxHold = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query CURR Crest Factor

       vi.WriteString(":FETC:CURR:CRES?")

       dCurrCrestFactor = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Real

       vi.WriteString(":FETC:POW:AC:REAL?")

       dPowACReal = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Apparent

       vi.WriteString(":FETC:POW:AC:APP?")

       dPowACApparent = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Reactive

       vi.WriteString(":FETC:POW:AC:REAC?")

       dPowACReactive = Convert.ToDouble(vi.ReadString(20), noCulture)

 

       ' Query POW AC Power Factor

       vi.WriteString(":FETC:POW:AC:PFAC?")

       dPowACPF = Convert.ToDouble(vi.ReadString(20), noCulture)